package com.cv.platform.service.search;

import com.cv.framework.common.pojo.PageResult;
import com.cv.platform.controller.platform.search.vo.CvVideoSearchReqVO;
import com.cv.platform.controller.platform.video.vo.CvVideoItemRespVO;
import com.cv.platform.dal.dataobject.video.CvVideoDO;
import com.cv.platform.dal.es.index.video.CvVideoEntity;

import java.util.List;

/**
 * 视频搜索业务层接口
 *
 * @author Charles_XDXD
 */
public interface CvVideoSearchService {

    /**
     * 视频搜索
     *
     * @param reqVO 分页查询请求对象
     * @return 视频分页数据
     */
    PageResult<CvVideoItemRespVO> searchVideo(CvVideoSearchReqVO reqVO);

    /**
     * 获取所有视频数据，按照观看次数排序
     *
     * @return 视频数据
     */
    List<CvVideoEntity> getAllVideoOrderByViewCount();

    /**
     * 同步视频数据到 ES 中
     */
    void syncData();

    /**
     * 获取前五的热搜
     *
     * @return 热搜数据
     */
    List<String> getHotSearch();

    /**
     * 同步昨日的所有搜索记录到数据库中
     */
    void syncSearchRecord();

    /**
     * 添加数据到 ES 中
     */
    void insertOrUpdate(CvVideoDO cvVideoDO);

    /**
     * 从 ES 中删除数据
     */
    void delete(Long videoId);

}
